/*
题目：数组中重复的数据
给你一个长度为 n 的整数数组 nums ，其中 nums 的所有整数都在范围 [1, n] 内，且每个整数出现 一次 或 两次 。请你找出所有出现 两次 的整数，并以数组形式返回。

你必须设计并实现一个时间复杂度为 O(n) 且仅使用常量额外空间的算法解决此问题。
 */
public class FindDuplicates {
    private int[] getCnt(int[] nums, int len) {
        int[] cnt = new int[len + 1];
        for (int x : nums) {
            cnt[x]++;
        }
        return cnt;
    }
    public List<Integer> findDuplicates(int[] nums) {
        int[] cnt;
        List<Integer> ans = new ArrayList<> ();
        cnt = getCnt(nums, nums.length);
        for (int i = 0; i < cnt.length; i++) {
            if (cnt[i] == 2) {
                ans.add(i);
            }
        }
        return ans;
    }
}
